const momentService = require("../service/moment.server");

class MomentController {
  //创建
  async create(ctx, next) {
    try {
      //读取数据（user_id,content）
      const { id: userId } = ctx.user;
      const { content } = ctx.request.body;

      if (!content) {
        return (ctx.body = {
          code: -1111,
          message: "动态内容不能为空",
        });
      }

      // 将数据存储到数据库中
      const result = await momentService.create(userId, content);
      ctx.body = {
        data: result,
        code: 200,
        message: "创建成功",
      };
    } catch (error) {
      console.log(error, "moment_controller错误");
    }
  }

  // 获取列表
  async list(ctx, next) {
    try {
      // 1.获取数据(offset/size)
      const { offset, size } = ctx.query;

      // 2.查询列表
      const result = await momentService.getMomentList(offset, size);
      ctx.body = result;
    } catch (error) {
      console.log(error, "momentcontroller");
    }
  }

  // 获取详情
  async detail(ctx, next) {
    //获取momentId
    const { momentId } = ctx.params;
    console.log(momentId, "777");
    if (!momentId) {
      return (ctx.body = {
        message: "请传入相应的momentId",
      });
    }

    // 2.根据id去查询这条数据
    const result = await momentService.getMomentById(momentId);
    ctx.body = { data: result, code: 200 };
  }

  // 修改
  async update(ctx, next) {
    // 1.获取参数
    const { momentId } = ctx.params;
    const { content } = ctx.request.body;
    // 2.修改内容
    const result = await momentService.update(content, momentId);
    ctx.body = {
      data: result,
      code: 200,
      message: "修改成功",
    };
  }

  // 删除
  async remove(ctx, next) {
    // 1.获取参数
    const { momentId } = ctx.params;
    // 2.修改内容
    const result = await momentService.remove(momentId);
    ctx.body = {
      data: result,
      code: 200,
      message: "删除成功",
    };
  }

  //添加标签
  async addLabels(ctx, next) {
    // 1.获取标签和动态id
    const { labels } = ctx;
    const { momentId } = ctx.params;

    // 2.添加所有的标签
    for (let label of labels) {
      // 2.1.判断标签是否已经和动态有关系
      const isExist = await momentService.hasLabel(momentId, label.id);
      if (!isExist) {
        await momentService.addLabel(momentId, label.id);
      }
    }

    ctx.body = {
      code: 200,
      message: "给动态添加标签成功",
    };
  }
}

module.exports = new MomentController();
